/**
 * @param { void } fn
 * @param { number } delay
 * @summary 防抖
 */
export function debounce (fn, delay = 500) {
    let timer = null;
    // 模仿函数的三部曲
    // 1. 执行fn
    // 2. 模仿参数
    // 3. 模仿this
    return function (...args) {
        if (timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(() => {
            fn.apply(this, args);
        }, delay);
    };
}
